using System.ComponentModel.DataAnnotations;

namespace Sheep_Breeding.Write.Api.production_a_DTO
{
    /// <summary>
    /// 母羊配种新增DTO
    /// </summary>
    public class AddEweMatingDto
    {
        /// <summary>
        /// 配种日期
        /// </summary>
        [Required(ErrorMessage = "配种日期不能为空")]
        public DateTime BreedingDate { get; set; }

        /// <summary>
        /// 上一次配种日期
        /// </summary>
        public DateTime LastBreedingDate { get; set; }

        /// <summary>
        /// 耳号
        /// </summary>
        [Required(ErrorMessage = "耳号不能为空")]
        [StringLength(50, ErrorMessage = "耳号长度不能超过50个字符")]
        public string EarNumber { get; set; }

        /// <summary>
        /// 种母品种
        /// </summary>
        [Required(ErrorMessage = "种母品种不能为空")]
        [StringLength(100, ErrorMessage = "种母品种长度不能超过100个字符")]
        public string FemaleBreed { get; set; }

        /// <summary>
        /// 种母类型（基础母羊/经产母羊等）
        /// </summary>
        [Required(ErrorMessage = "种母类型不能为空")]
        [StringLength(50, ErrorMessage = "种母类型长度不能超过50个字符")]
        public string FemaleType { get; set; }

        /// <summary>
        /// 首配公羊
        /// </summary>
        [Required(ErrorMessage = "首配公羊不能为空")]
        [StringLength(50, ErrorMessage = "首配公羊长度不能超过50个字符")]
        public string FirstMaleSheep { get; set; }

        /// <summary>
        /// 种公品种
        /// </summary>
        [StringLength(100, ErrorMessage = "种公品种长度不能超过100个字符")]
        public string ExtraMaleSheep { get; set; }

        /// <summary>
        /// 配种方式（自然交配/人工授精等）
        /// </summary>
        [Required(ErrorMessage = "配种方式不能为空")]
        [StringLength(50, ErrorMessage = "配种方式长度不能超过50个字符")]
        public string BreedingMethod { get; set; }

        /// <summary>
        /// 种母发情类型
        /// </summary>
        [StringLength(50, ErrorMessage = "种母发情类型长度不能超过50个字符")]
        public string FemaleEstrusType { get; set; }

        /// <summary>
        /// 配种环节
        /// </summary>
        [StringLength(50, ErrorMessage = "配种环节长度不能超过50个字符")]
        public string BreedingStage { get; set; }

        /// <summary>
        /// 当前栋舍
        /// </summary>
        [StringLength(50, ErrorMessage = "当前栋舍长度不能超过50个字符")]
        public string BreedingHouse { get; set; }

        /// <summary>
        /// 当前栏位
        /// </summary>
        [StringLength(50, ErrorMessage = "当前栏位长度不能超过50个字符")]
        public string BreedingPen { get; set; }

        /// <summary>
        /// 体重（公斤）
        /// </summary>
        [Range(0, 1000, ErrorMessage = "体重必须在0-1000公斤之间")]
        public decimal Weight { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [StringLength(500, ErrorMessage = "备注长度不能超过500个字符")]
        public string Remark { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        [Required(ErrorMessage = "创建人不能为空")]
        [StringLength(50, ErrorMessage = "创建人长度不能超过50个字符")]
        public string Creator { get; set; }
        
        /// <summary>
        /// 事件类型
        /// </summary>
        [StringLength(50, ErrorMessage = "事件类型长度不能超过50个字符")]
        public string EventType { get; set; }
        
        /// <summary>
        /// 事件栏位
        /// </summary>
        [StringLength(50, ErrorMessage = "事件栏位长度不能超过50个字符")]
        public string EventPen { get; set; }
        
        /// <summary>
        /// 转入栏位
        /// </summary>
        [StringLength(50, ErrorMessage = "转入栏位长度不能超过50个字符")]
        public string TransferInPen { get; set; }
        
        /// <summary>
        /// 转入栋舍
        /// </summary>
        [StringLength(50, ErrorMessage = "转入栋舍长度不能超过50个字符")]
        public string TransferInHouse { get; set; }
        
        /// <summary>
        /// 预测状态
        /// </summary>
        [StringLength(50, ErrorMessage = "预测状态长度不能超过50个字符")]
        public string PredictionStatus { get; set; }
        
        /// <summary>
        /// 事件日期
        /// </summary>
        public DateTime? EventDate { get; set; }
        
        /// <summary>
        /// 负责人
        /// </summary>
        [StringLength(50, ErrorMessage = "负责人长度不能超过50个字符")]
        public string Principal { get; set; }
    }
} 